The academic field of machine learning studies systems and methods for learning associations between inputs and outputs. The exact nature of the inputs, techniques and outputs depend upon the domain of application.
The inputs to a machine learning technique are typically referred to as “features” or “attributes”. It is often desirable to make learning techniques operate as quickly as possible, in particular, in real-time or in near real-time. Sometimes, a major obstacle to achieving faster performance is creating a component that can rapidly compute the values of some of the input features.
In some cases, a class of input features sometimes known as “Boolean-valued input features” is pertinent to a particular application of machine learning. For example, in the context of computer games, inputs to the learning technique typically include features that characterize the current game situation in which a game character finds itself. For example, it might be pertinent whether the game character is under attack by a nearby enemy and low on health, or in contrast, the game character in question might be full of health and heading toward a large tree. Another kind of input feature that is useful for certain problems are features that characterize certain objects. For example, a game character may need to know the identity of the most dangerous enemy within attack range, as well as the identity of the nearest enemy with a sword.
Boolean-valued input features are features that can be either true or false. Boolean-valued input features are usually defined by a logical expression comprised of one or more dependent features composed together using any standard logical operators such as and (&&), or (||), not (!), equality (==), less than (<), less than or equal to (<=), greater than (>), greater than or equal to (>=), not equal to (!=) and parentheses. The dependent features are sometimes referred to by the inventors as the primitives.
Boolean-valued input features represent one example of how the need to create a component to rapidly evaluate sets of logical expressions occurs naturally within the context of machine learning. But in many other sub-fields of artificial intelligence (AI), as well as other areas such as electronic circuits, the need for a component to rapidly evaluate sets of logical expressions is commonplace.